socket() -> this is a syscall which returns an fd.

        fd - It is like a integer which is like an ID used by kernel. It is basically related
            to kernel functionality.

bind() -> It is used to bind the address to the fd.
       -> The address is which we want to connect with.

listen() -> listen helps to establish connection with that address.

accept() -> when connection is made my client, it returns an fd which represents the established connection.

WORKFLOW OF SERVER (PSEUDO CODE):

    fd = socket();
    bind(fd,address)
    listen(fd)
    while(true)
        conn_fd = accept(fd)
        /**************/
            do something with conn_fd
            doing something in this connection
        /**************/
        close(conn_fd)


connect() -> take the fd from client side and make the connection from the address that
          -> the address is of the server side.
WORKFLOW OF CLIENT (PSEUDO CODE)

    fd = socket()
    connect(fd,address)
    /*********/
        doing something in the connection/
    /*********/
    close(fd)
